package com.ruoyi.training.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;

/**
 * 培训班主对象 training_class
 *
 * @author WorrilessGo
 * @date 2025-09-24
 */
@Data
public class TrainingClass extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 培训班ID（主键） */
    private String trainingClassId;

    /** 培训班编号 */
    @Excel(name = "培训班编号")
    private String trainingClassCode;

    /** 主办单位 */
    @Excel(name = "主办单位")
    private String organizer;

    /** 培训类型（内训） */
    @Excel(name = "培训类型（内训）")
    private String trainingTypeInternal;

    /** 培训项目（项目1id,项目2id） */
    @Excel(name = "培训项目", readConverterExp = "项=目1id,项目2id")
    private String trainingProject;

    /** 报名类别 */
    @Excel(name = "报名类别")
    private String signUpCategory;


    /** 培训班名称（如：2024Python全栈开发实战班） */
    @Excel(name = "培训班名称", readConverterExp = "如=：2024Python全栈开发实战班")
    private String trainingClassName;

    /** 班级状态（字典：0-未开班，1-报名中，2-已开班，3-已结束，4-已取消） */
    @Excel(name = "班级状态", readConverterExp = "字=典：0-未开班，1-报名中，2-已开班，3-已结束，4-已取消")
    private String  classStatus;

    /** 培训年份（如：2024） */
    @Excel(name = "培训年份", readConverterExp = "如=：2024")
    private String trainingYear;

    /** 期次（如：第1期、202406期） */
    @Excel(name = "期次", readConverterExp = "如=：第1期、202406期")
    private String trainingSession;

    /** 培训类型 */
    @Excel(name = "培训类型")
    private String trainingType;

    /** 开班类型 */
    @Excel(name = "开班类型")
    private String startupType;

    /** 培训部门 */
    @Excel(name = "培训部门")
    private String trainingDepartment;

    /** 培训人数（计划名额） */
    @Excel(name = "培训人数", readConverterExp = "计=划名额")
    private Long totalQuota;

    /** 培训报到人数 */
    @Excel(name = "培训报到人数")
    private Long registeredCount;

    /** 报到日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "报到日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date registrationDate;

    /** 培训开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "培训开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDate;

    /** 培训截止日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "培训截止日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDate;

    /** 培训地区（如：北京市） */
    @Excel(name = "培训地区", readConverterExp = "如=：北京市")
    private String trainingRegion;

    /** 培训地址（详细地址，如：海淀区XX大厦10层） */
    @Excel(name = "培训地址", readConverterExp = "详=细地址，如：海淀区XX大厦10层")
    private String trainingAddress;

    /** 培训地点（如：1号会议室） */
    @Excel(name = "培训地点", readConverterExp = "如=：1号会议室")
    private String trainingVenue;

    /** 实际培训地点（若与计划不一致） */
    @Excel(name = "实际培训地点", readConverterExp = "若=与计划不一致")
    private String actualTrainingVenue;

    /** 班主任1（关联人员表ID，非会员） */
    @Excel(name = "班主任1", readConverterExp = "关=联人员表ID，非会员")
    private String headTeacher1;

    /** 班主任2（关联人员表ID，非会员，可选） */
    @Excel(name = "班主任2", readConverterExp = "关=联人员表ID，非会员，可选")
    private String headTeacher2;

    /** 交接情况 */
    @Excel(name = "交接情况", readConverterExp = "交接情况(字典：0-未交接，1-交接中，2-已交接)")
    private String handoverStatus;

    /** 附件（文件url） */
    @Excel(name = "附件", readConverterExp = "文=件url")
    private String attachments;

    /** 组成人员整体状态（如：active-在职，inactive-离职） */
    @Excel(name = "组成人员整体状态", readConverterExp = "如=：active-在职，inactive-离职")
    private String staffOverallStatus;

    /** 组成人员详情（1:101;102/2:103;104） */
    @Excel(name = "组成人员详情", readConverterExp = "1=:101;102/2:103;104")
    private String staffInfo;

    /** 课程ID列表（格式：course_001,course_002） */
    @Excel(name = "课程ID列表", readConverterExp = "格=式：course_001,course_002")
    private String courseIds;

    /** 教师ID列表（格式：teacher_001,teacher_002） */
    @Excel(name = "教师ID列表", readConverterExp = "格=式：teacher_001,teacher_002")
    private String teacherIds;

    /** 教材ID列表（格式：material_001,material_002） */
    @Excel(name = "教材ID列表", readConverterExp = "格=式：material_001,material_002")
    private String teachingMaterialIds;

    /** 班级耗材ID列表（格式：class_supplies_001,class_supplies_002） */
    @Excel(name = "班级耗材ID列表", readConverterExp = "格=式：class_supplies_001,class_supplies_002")
    private String classSuppliesIds;

    /** 是否需要考试（0-需要，2-不需要） */
    @Excel(name = "是否需要考试", readConverterExp = "0=-需要，2-不需要")
    private Long needExam;

    /** 试卷ID列表（格式：paper_001,paper_002，need_exam=0时必填） */
    @Excel(name = "试卷ID列表", readConverterExp = "格=式：paper_001,paper_002，need_exam=0时必填")
    private String examPaperIds;

    /** 证书ID（关联证书表，培训结束后生成） */
    @Excel(name = "证书ID", readConverterExp = "关=联证书表，培训结束后生成")
    private String certificateId;

    /** 培训计划描述（补充说明） */
    @Excel(name = "培训计划描述", readConverterExp = "补=充说明")
    private String trainingPlanDesc;

    /** 费用结算 */
    @Excel(name = "费用结算")
    private String feeSettlement;

    /** 逻辑删除 */
    @Excel(name = "逻辑删除")
    private String isRemove;

    /** 备注（其他补充信息） */
    @Excel(name = "备注", readConverterExp = "其=他补充信息")
    private String remarks;

    public static long getSerialVersionUID() {
        return serialVersionUID;
    }

    public String getTrainingClassId() {
        return trainingClassId;
    }

    public void setTrainingClassId(String trainingClassId) {
        this.trainingClassId = trainingClassId;
    }

    public String getTrainingClassCode() {
        return trainingClassCode;
    }

    public void setTrainingClassCode(String trainingClassCode) {
        this.trainingClassCode = trainingClassCode;
    }

    public String getTrainingProject() {
        return trainingProject;
    }

    public void setTrainingProject(String trainingProject) {
        this.trainingProject = trainingProject;
    }

    public String getTrainingClassName() {
        return trainingClassName;
    }

    public void setTrainingClassName(String trainingClassName) {
        this.trainingClassName = trainingClassName;
    }

    public String getClassStatus() {
        return classStatus;
    }

    public void setClassStatus(String classStatus) {
        this.classStatus = classStatus;
    }

    public String getTrainingYear() {
        return trainingYear;
    }

    public void setTrainingYear(String trainingYear) {
        this.trainingYear = trainingYear;
    }

    public String getTrainingSession() {
        return trainingSession;
    }

    public void setTrainingSession(String trainingSession) {
        this.trainingSession = trainingSession;
    }

    public String getTrainingType() {
        return trainingType;
    }

    public void setTrainingType(String trainingType) {
        this.trainingType = trainingType;
    }

    public String getStartupType() {
        return startupType;
    }

    public void setStartupType(String startupType) {
        this.startupType = startupType;
    }

    public String getTrainingDepartment() {
        return trainingDepartment;
    }

    public void setTrainingDepartment(String trainingDepartment) {
        this.trainingDepartment = trainingDepartment;
    }

    public Long getTotalQuota() {
        return totalQuota;
    }

    public void setTotalQuota(Long totalQuota) {
        this.totalQuota = totalQuota;
    }

    public Long getRegisteredCount() {
        return registeredCount;
    }

    public void setRegisteredCount(Long registeredCount) {
        this.registeredCount = registeredCount;
    }

    public Date getRegistrationDate() {
        return registrationDate;
    }

    public void setRegistrationDate(Date registrationDate) {
        this.registrationDate = registrationDate;
    }

    public Date getStartDate() {
        return startDate;
    }

    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }

    public Date getEndDate() {
        return endDate;
    }

    public void setEndDate(Date endDate) {
        this.endDate = endDate;
    }

    public String getTrainingRegion() {
        return trainingRegion;
    }

    public void setTrainingRegion(String trainingRegion) {
        this.trainingRegion = trainingRegion;
    }

    public String getTrainingAddress() {
        return trainingAddress;
    }

    public void setTrainingAddress(String trainingAddress) {
        this.trainingAddress = trainingAddress;
    }

    public String getTrainingVenue() {
        return trainingVenue;
    }

    public void setTrainingVenue(String trainingVenue) {
        this.trainingVenue = trainingVenue;
    }

    public String getActualTrainingVenue() {
        return actualTrainingVenue;
    }

    public void setActualTrainingVenue(String actualTrainingVenue) {
        this.actualTrainingVenue = actualTrainingVenue;
    }

    public String getHeadTeacher1() {
        return headTeacher1;
    }

    public void setHeadTeacher1(String headTeacher1) {
        this.headTeacher1 = headTeacher1;
    }

    public String getHeadTeacher2() {
        return headTeacher2;
    }

    public void setHeadTeacher2(String headTeacher2) {
        this.headTeacher2 = headTeacher2;
    }

    public String getHandoverStatus() {
        return handoverStatus;
    }

    public void setHandoverStatus(String handoverStatus) {
        this.handoverStatus = handoverStatus;
    }

    public String getAttachments() {
        return attachments;
    }

    public void setAttachments(String attachments) {
        this.attachments = attachments;
    }

    public String getStaffOverallStatus() {
        return staffOverallStatus;
    }

    public void setStaffOverallStatus(String staffOverallStatus) {
        this.staffOverallStatus = staffOverallStatus;
    }

    public String getStaffInfo() {
        return staffInfo;
    }

    public void setStaffInfo(String staffInfo) {
        this.staffInfo = staffInfo;
    }

    public String getCourseIds() {
        return courseIds;
    }

    public void setCourseIds(String courseIds) {
        this.courseIds = courseIds;
    }

    public String getTeacherIds() {
        return teacherIds;
    }

    public void setTeacherIds(String teacherIds) {
        this.teacherIds = teacherIds;
    }

    public String getTeachingMaterialIds() {
        return teachingMaterialIds;
    }

    public void setTeachingMaterialIds(String teachingMaterialIds) {
        this.teachingMaterialIds = teachingMaterialIds;
    }

    public String getClassSuppliesIds() {
        return classSuppliesIds;
    }

    public void setClassSuppliesIds(String classSuppliesIds) {
        this.classSuppliesIds = classSuppliesIds;
    }

    public Long getNeedExam() {
        return needExam;
    }

    public void setNeedExam(Long needExam) {
        this.needExam = needExam;
    }

    public String getExamPaperIds() {
        return examPaperIds;
    }

    public void setExamPaperIds(String examPaperIds) {
        this.examPaperIds = examPaperIds;
    }

    public String getCertificateId() {
        return certificateId;
    }

    public void setCertificateId(String certificateId) {
        this.certificateId = certificateId;
    }

    public String getTrainingPlanDesc() {
        return trainingPlanDesc;
    }

    public void setTrainingPlanDesc(String trainingPlanDesc) {
        this.trainingPlanDesc = trainingPlanDesc;
    }

    public String getFeeSettlement() {
        return feeSettlement;
    }

    public void setFeeSettlement(String feeSettlement) {
        this.feeSettlement = feeSettlement;
    }

    public String getRemarks() {
        return remarks;
    }

    public void setRemarks(String remarks) {
        this.remarks = remarks;
    }

    public String getIsRemove() {
        return isRemove;
    }

    public void setIsRemove(String isRemove) {
        this.isRemove = isRemove;
    }

    public String getOrganizer() {
        return organizer;
    }

    public void setOrganizer(String organizer) {
        this.organizer = organizer;
    }

    public String getTrainingTypeInternal() {
        return trainingTypeInternal;
    }

    public void setTrainingTypeInternal(String trainingTypeInternal) {
        this.trainingTypeInternal = trainingTypeInternal;
    }

    @Override
    public String toString() {
        return "TrainingClass{" +
                "trainingClassId='" + trainingClassId + '\'' +
                ", trainingClassCode='" + trainingClassCode + '\'' +
                ", organizer='" + organizer + '\'' +
                ", trainingTypeInternal='" + trainingTypeInternal + '\'' +
                ", trainingProject='" + trainingProject + '\'' +
                ", signUpCategory='" + signUpCategory + '\'' +
                ", trainingClassName='" + trainingClassName + '\'' +
                ", classStatus='" + classStatus + '\'' +
                ", trainingYear='" + trainingYear + '\'' +
                ", trainingSession='" + trainingSession + '\'' +
                ", trainingType='" + trainingType + '\'' +
                ", startupType='" + startupType + '\'' +
                ", trainingDepartment='" + trainingDepartment + '\'' +
                ", totalQuota=" + totalQuota +
                ", registeredCount=" + registeredCount +
                ", registrationDate=" + registrationDate +
                ", startDate=" + startDate +
                ", endDate=" + endDate +
                ", trainingRegion='" + trainingRegion + '\'' +
                ", trainingAddress='" + trainingAddress + '\'' +
                ", trainingVenue='" + trainingVenue + '\'' +
                ", actualTrainingVenue='" + actualTrainingVenue + '\'' +
                ", headTeacher1='" + headTeacher1 + '\'' +
                ", headTeacher2='" + headTeacher2 + '\'' +
                ", handoverStatus='" + handoverStatus + '\'' +
                ", attachments='" + attachments + '\'' +
                ", staffOverallStatus='" + staffOverallStatus + '\'' +
                ", staffInfo='" + staffInfo + '\'' +
                ", courseIds='" + courseIds + '\'' +
                ", teacherIds='" + teacherIds + '\'' +
                ", teachingMaterialIds='" + teachingMaterialIds + '\'' +
                ", classSuppliesIds='" + classSuppliesIds + '\'' +
                ", needExam=" + needExam +
                ", examPaperIds='" + examPaperIds + '\'' +
                ", certificateId='" + certificateId + '\'' +
                ", trainingPlanDesc='" + trainingPlanDesc + '\'' +
                ", feeSettlement='" + feeSettlement + '\'' +
                ", isRemove='" + isRemove + '\'' +
                ", remarks='" + remarks + '\'' +
                '}';
    }
}
